﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
// 原题连接：https://leetcode.cn/problems/kth-largest-element-in-an-array/
/*
题目描述：
给定整数数组 nums 和整数 k，请返回数组中第 k 个最大的元素。

请注意，你需要找的是数组排序后的第 k 个最大的元素，而不是第 k 个不同的元素。

你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。

 

示例 1:

输入: [3,2,1,5,6,4], k = 2
输出: 5
示例 2:

输入: [3,2,3,1,2,4,5,5,6], k = 4
输出: 4
 

提示：

1 <= k <= nums.length <= 105
-104 <= nums[i] <= 104
*/

// 开始解题：
// 方法1——直接逆序排序

int cmp_int(const void* p1, const void* p2) {
    assert(p1 && p2);
    return *(int*)p2 - *(int*)p1;
}
int findKthLargest(int* nums, int numsSize, int k) {
    assert(nums);
    // 先将数组进行排序
    qsort(nums, numsSize, sizeof(int), cmp_int);
    return nums[k - 1];
}